package com.luobo.home.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//通过全局配置控制器，设置跨域允许请求
//在大多数现代Web应用中，处理CORS的更好方式是使用Spring提供的CORS支持。你可以在配置类中全局配置CORS，也可以在控制器或方法级别进行配置。例如，全局配置CORS可以如下进行：
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://192.168.31.232:8090") // 指定具体的前端域名
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("Content-Type", "Authorization") // 添加 Authorization 请求头
                .allowCredentials(true)
                .maxAge(3600);
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); // 允许携带凭证（如 Cookie）
        config.addAllowedOrigin("http://192.168.31.232:8090"); // 前端地址
        config.addAllowedHeader("*"); // 允许所有头
        config.addAllowedMethod("*"); // 允许所有 HTTP 方法
        config.addExposedHeader("Authorization"); // 暴露 Authorization 头
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}
